Conventional techniques for compressing a digital motion picture signal obtain a motion vector before quantizing the digital motion picture signal and quantize the motion picture signal in response to the motion vector. Compressors that compress a digital motion picture signal in response to a motion vector are disclosed in such patents as U.S. Pat. Nos. 4,982,285 and 4.985,768.
Generally, a motion picture signal has a high correlation between portions of the motion picture signal representing two consecutive frames, except when scene changes occur. Thus a motion picture signal can be compressed by determining the differences in the pixel data between consecutive frames of the motion picture signal, and then quantizing these differences. However, if the picture includes moving portions, the quantity of difference data can be large. For this reason, a method called block matching is preferably used.
FIGS. 1A to 1C are diagrams explaining the principles of block matching. The nth frame (FIG. 1A) and the n+1th frame (FIG. 1B) are compared. In these frames, the image portion labelled "tree" is almost unchanged between the frames. Therefore, the error resulting from placing the image portion "tree" in the n+1th frame (FIG. 1B) with the image portion "tree" of the nth frame (FIG. 1A) is rarely perceptible.
On the other hand, the image portion "car" in the n+1th frame cannot similarly be replaced by the image portion "car" in the nth frame. The image portion "car" in the n+1th frame (FIG. 1B) has moved significantly relative to the image portion "car" in the nth frame (FIG. 1A). This change of position of the image portion "car" is shown with solid lines and dotted lines in the n+1th frame of FIG. 1B.
There is almost no change in the image portion "car" itself between the nth frame (FIG. 1A) and the n+1th frame (FIG. 1B), so the image portion "car" can therefore be considered to be same in both frames. The block containing the image portion "car" in the nth frame (FIG. 1A) has moved horizontally to the position of the block containing the image portion "car" in the n+1th frame (FIG. 1B). Thus, the quantity of data required represent the motion picture can then be reduced by analyzing the picture into blocks, and expressing the amount and direction of movement of each block between consecutive frames as a motion vector.
The process of selecting a block of a previous frame that is in optimum accordance with each block of the current frame is called block matching. Block matching does not generate a motion vector immediately. Instead, as shown in FIG. 1C, in a predetermined area of the frame, a block of the previous frame (B1) is sequentially shifted up, down, left, and right by one pixel after being moved in accordance with the motion vector of the previous frame. After each shift, the difference between each pixel in the block of the current frame and the corresponding pixel of the shifted block of the previous frame is determined. Then, the block position (B2) where the sum of the differences is a minimum is selected, and the data quantity is reduced by using the resulting motion quantity (magnitude and direction) of the block B2 as the motion vector.
A known apparatus for compressing a digital motion picture signal moves each block of the previous frame in the x- and y-directions in response to the motion vector of the block in the previous frame in such a way that a motion vector that minimizes the sum of the absolute values of the differences (difference absolute value sum) between the current block and the corresponding block of the previous frame, shifted in each direction as just described, is determined to be the motion vector of the current block.
The quantity of difference data can be further reduced by calculating the motion vector with half-pixel precision. A typical method for determining the motion vector with half pixel precision will be described with reference to FIG. 2. First, a primary motion vector MVi is obtained for each block with one-pixel precision, as just described. Next, a secondary motion vector Vi with half-pixel precision is determined by calculating pixels with half-pixel precision, indicated by x, .DELTA., and .quadrature., by interpolation in the horizonal, vertical, and vertical directions, respectively. The secondary motion vector Vi is calculated using the pixel (indicated by .circleincircle.) indicated by the motion vector MVi as origin, and is then combined with the primary motion vector MVi to obtain the desired motion vector MVH (=MVi+Vi) with half-pixel precision.
For example, in the case of a block consisting of 8 (in the horizontal (x) direction).times.8 (in the vertical (y) direction) pixels, the motion vector with one-pixel precision is obtained for each block in 64 clock cycles. In this time, the corresponding block is displaced in accordance with a motion vector (i, j) and, using the displaced location as a starting point, the data for 10 (in the horizontal direction).times.10 (in the vertical direction) pixels are read at one-pixel precision from (i-1, j-1 ) to (i+8, j+8), to carry out the interpolation processing.
When the motion vector MVH is determined with half-pixel precision, a double density search area is formed by deriving interpolation pixels (indicated by .quadrature., .DELTA., and x) between adjacent real pixels (indicated by .largecircle.). Then, block matching is carried out between the search area and the current block to determine the motion vector MVH with half-pixel precision.
To determine the motion vector with a half-pixel precision, a method may be used in which interpolation is performed beforehand over the entire search area, and the resulting interpolation data are stored in a frame memory. In this case, to carry out the required interpolation, 10 (in the horizontal direction).times.10 (in the vertical direction) pixel data must be read in a period of 64 clock cycles, so the interpolation operation must be carried out using a clock speed faster than the normal clock speed. Additionally, a clock signal with a clock speed of 64:100 must be generated using a Phase-Locked Loop (PLL) circuit. Since the clock speed ratio of the PLL is not a simple integer ratio, the system is non-synchronous, and a complex circuit construction must be used to provide synchronization.
As another method, the computed interpolation data are previously stored in frame memory, and a motion vector which minimizes the difference absolute value sum can then be determined with a half-pixel precision. However, since the number of interpolation pixels is larger than the number of pixels on which block matching is carried out, the speed of the block matching processing must be four times higher, or a block matching processing circuit having four times the scale must be used.
Therefore, neither of these two alternatives is practical in terms of system construction.